/**
描述
  蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
  例如，当输入5时，应该输出的三角形为：
  1 3 6 10 15
  2 5 9 14
  4 8 13
  7 12
  11

  输入描述：
    输入正整数N（N不大于100）

  输出描述：
    输出一个N行的蛇形矩阵。

  输入：
    4
  输出：
    1 3 6 10
    2 5 9
    4 8
    7
*/
const readline = require('readline')
const rl = readline.createInterface({
  input:process.stdin,
  output:process.stdout
})


function transform(input) {
  let sum = 1
  let i = 1, j = 1, k = 1;
  let resArr = []
  while (input > 0) {
    for(; i <= input; i++) {
      resArr = []
      j = i
      // 第一次 i = 1 表示 从 1 开始 第二行开始 sum 从上一行的第二个元素开始 减一
      sum = i == 1 ? i : k - 1
      for(; j <= input; j++) {
        resArr.push(sum)
        sum += j + 1
      }
      k = resArr[1] || 0
      console.log(resArr.join(' '))
    }
    k++
    input--
  }
}

// 本地测试
// const inputStr = 5
// transform(inputStr)

// 提交测试
rl.on('line', (line) => {
  if (line) {
    // 处理接收
    transform(line)
  }
})